package code11_util;

import static org.junit.Assert.*;

import java.util.Arrays;

import org.junit.Test;

public class Test03 {
	// 第三方 jar 使用:
	// 把 junit.jar 引入(复制)到项目中, 在 jar文件上右击 build path --> add to build path

	// 模板: public修饰, 无返回值, 无参数
	@Test // 在测试方法上加 @Test
	public void f1() {
		System.out.println("测试");
	}
	@Test
	public void f2() {
		System.out.println("测试2222");
	}
	@Test
	public void f3() {
		// 直接定义
		String s1 = "abc";
		String s2 = "";// 空字符串
		String s3 = null;// 空, 无值
		
		// 使用构造方法
		String s4 = new String("test");
		
		// 字符串和任何变量相加，得到的还是一个字符串，相当于把两个变量的值拼接在一起
		String s5 = s1 + null;
		System.out.println(s5);
		System.out.println(s1 + 123);
		System.out.println(s1 + "hello");
	}
	@Test
	public void f4() {
		String s = "hello world";
		System.out.println("字符串的长度:"+s.length());
		// 返回 -1 表示没有找到对应的字符(串)
		System.out.println("该字符串第一次出现的位置(下标):"+s.indexOf("l"));// 2
		System.out.println("该字符第一次出现的位置(下标):"+s.indexOf('l'));// 2
		System.out.println("从指定位置开始，该字符串第一次出现的位置(下标):"+s.indexOf("l", 4));// 9
		
		System.out.println("该字符串第一次出现的位置(下标):"+s.indexOf("wor"));// 6
	}
	@Test
	public void f5() {
		String s = "hello world";
		// 返回 -1 表示没有找到对应的字符(串)
		System.out.println("字符串最后一次出现的位置:"+s.lastIndexOf("l"));// 9
		System.out.println("(从指定位置向前查询)字符串最后一次出现的位置:"+s.lastIndexOf("l", 4));// 3
		
		// String的大部分方法不会改变原变量中的字符串值
		// 开始值, 不能超出字符串的长度
		System.out.println("截取索引从[2,5)的字符:"+s.substring(2, 5));// 左闭右开, llo
		System.out.println("截取索引从 6开始到末尾 的字符:"+s.substring(6));// world
		System.out.println("截取11:"+s.substring(11)); // ""
		//System.out.println("截取12:"+s.substring(12));// 不能超出字符串的长度
		
		// 不能超出下标的限制
		char charAt = s.charAt(2);
		System.out.println("获取指定索引上的字符:"+charAt);
	}
	@Test
	public void f6() {
		String s = "hello world";
		
		System.out.println("字符串的拼接:"+s.concat(", hei"));
		System.out.println("判断是否以指定的内容开头:"+s.startsWith("hel"));// true
		System.out.println("判断是否以指定的内容结尾:"+s.endsWith("tld"));// false
		
		System.out.println("是否包含指定的字符串:"+s.contains("wo"));// true
		System.out.println("是否是空字符串:"+s.isEmpty());// 是否是 空字符串 ""
		System.out.println("判断两个字符串内容是否相同:"+s.equals("hello world"));// true
		System.out.println("忽略字母的大小写，判断两个字符串内容是否相同:"+s.equalsIgnoreCase("Hello World"));// true
	}
	@Test
	public void f7() {
		String s = "hello world";
		
		String upperCase = s.toUpperCase();
		System.out.println("字母全部转大写:"+upperCase);
		String lowerCase = upperCase.toLowerCase();
		System.out.println("字母全部转小写:"+lowerCase);
		
		System.out.println("将l全部替换为678:"+s.replace("l", "678"));//he678678o wor678d
		System.out.println("原:"+s);
		
		System.out.println("去除字符串首尾的空格:"+"  abc de  ".trim());
		// 根据指定内容拆分字符串,得到拆分后字符串数组
		String[] arr1 = s.split(" ");
		System.out.println("拆分:" + Arrays.toString(arr1));
		String[] arr2 = s.split("l");
		System.out.println("拆分2:" + Arrays.toString(arr2));
	}
	@Test
	public void f8(){
		String s = "hello world";
		char[] array = s.toCharArray();
		// 不会影响原始的字符串
		System.out.println("把字符串转换为字符数组:"+Arrays.toString(array));
		
		byte[] bytes = s.getBytes();
		System.out.println("使用系统默认字符集,把字符串转换为字节数组"+Arrays.toString(bytes));
		
		// 把数组中元素使用自定的字符连接在一起。
		String[] arr = {"aa","b1","cs","dd"};
		System.out.println("join:"+String.join("-", arr));
	}
}
